/**
 * <p>SystemName: WLBSNS</p>
 * <P>FileName: IBaseDao.java</P>
 * <p>Description: 微乐帮社交网络 </p> 
 * <p>Copyright: Copyright (c) 2013 </p> 
 * <p>Company: </p> 
 * @author Theron 
 * @date 2013年11月10日 下午4:53:14 
 * @version V1.0 
 */
package com.wlbsns.framework.base;

import java.util.List;

import com.wlbsns.framework.exception.SystemException;

/**
 * 
 * <p>FileName: IBaseDao.java </p>
 * <p>PackageName: com.wlbsns.framework.base </p>
 * <p>ClassName: BaseDao </p>
 * <p>Desciption: </p>
 * @author Theron
 * @date 2013年11月10日 下午5:04:03
 */
public interface IBaseDao {
	
	/**
	 * 
	 * <p>FileName: IBaseDao.java</p>
	 * <p>Function: 添加数据 </p>
	 * <p>Description: 向数据库指定表中添加一条记录</p>
	 * @date 2013年11月8日 下午5:54:36
	 * @author Theron
	 * @param obj 参数对象
	 * @return num 插入数据后影响数据的行数
	 * @throws SystemException
	 * <p>ReturnType: int</p>
	 */
	public int addObj(Object obj) throws SystemException;
	/**
	 * 
	 * <p>FileName: IBaseDao.java</p>
	 * <p>Function: 修改数据 </p>
	 * <p>Description: 更新数据库中指定的信息 </p>
	 * @date 2013年11月10日 下午5:06:44
	 * @author Theron
	  * @param objs 修改对象的参数
	 * @return 更新数据后影响的数据行
	 * @throws SystemException
	 * <p>ReturnType: int</p>
	 */
	public int updateObj(Object... objs) throws SystemException;
	
	/**
	 * 
	 * <p>FileName: IBaseDao.java</p>
	 * <p>Function:  删除数据 </p>
	 * <p>Description: 删除数据库中指定的信息 </p>
	 * @date 2013年11月10日 下午5:07:29
	 * @author Theron
	 * @param objs
	 * @return 删除数据后影响的数据行
	 * @throws SystemException
	 * <p>ReturnType: int</p>
	 */
	public int deleteObj(Object... objs) throws SystemException;

	/**
	 * 
	 * <p>FileName: IBaseDao.java</p>
	 * <p>Function: 得到一个对象的信息 </p>
	 * <p>Description: 通过sql语句和指定对象查询数据库表中数据 </p>
	 * @date 2013年11月10日 下午5:08:04
	 * @author Theron
	 * @param clazz
	 * @return T
	 * @throws SystemException
	 * <p>ReturnType: T</p>
	 */
	public <T> T getObjInfo(Class<T> clazz) throws SystemException; 
	
	/**
	 * 
	 * <p>FileName: IBaseDao.java</p>
	 * <p>Function: 通过条件查询一个对象 </p>
	 * <p>Description: 通过sql、指定对象和指定的条件查询出满足要求的数据 </p>
	 * @date 2013年11月10日 下午6:29:12
	 * @author Theron
	 * @param clazz
	 * @param objs
	 * @return T
	 * @throws SystemException
	 * <p>ReturnType: T</p>
	 */
	public <T> T getObjByCondition(Class<T> clazz,Object... objs) throws SystemException;
	
	/**
	 * 
	 * <p>FileName: IBaseDao.java</p>
	 * <p>Function: 得到一个对象的全部数据 </p>
	 * <p>Description: 通过指定对象查询出该对象的所有数据 </p>
	 * @date 2013年11月10日 下午5:08:40
	 * @author Theron
	 * @param clazz
	 * @return T
	 * @throws SystemException
	 * <p>ReturnType: List<T></p>
	 */
	public <T> List<T> getObjs(Class<T> clazz) throws SystemException; 
	
	
}
